package repository

import (
	"context"
	"ruoyi-go-echo-ddd/internal/domain/model"
	"ruoyi-go-echo-ddd/internal/infrastructure/http/request"
)

// SysUserRepository 系统用户Repository
type SysUserRepository interface {
	Insert(ctx context.Context, user *model.User) (*model.User, error)
	Update(ctx context.Context, user *model.User) (int64, error)
	SelectById(ctx context.Context, id int64) (*model.User, error)
	SelectByUsername(ctx context.Context, username string) (*model.User, error)
	DeleteById(ctx context.Context, id int64) (int64, error)
	BatchInsert(ctx context.Context, list []*model.User) ([]int64, error)
	BatchDelete(ctx context.Context, ids []any) (int64, error)
	SelectPage(ctx context.Context, param *request.UserPageParam) ([]*model.User, int64, int64, error)
	SelectList(ctx context.Context, limit, offset int64) ([]*model.UserForExcel, error)
	GetTotalCount(ctx context.Context) (int64, error)
	Login(ctx context.Context, user *model.UserLogin) (*model.User, error)
	SelectAll(ctx context.Context) ([]*model.UserForExcel, error)
}
